repo: don't forget to abort the transaction when failed
authorCosimo Cecchi <cosimo@endlessm.com>
Tue, 28 Jul 2015 00:17:26 +0000 (17:17 -0700)
committerColin Walters <walters@verbum.org>
Tue, 28 Jul 2015 15:35:42 +0000 (11:35 -0400)
commita5f266f25dfbab200472e15202830e1b9dccf999
tree9c29064b0fb45845aa656f8bde268ba3ffab4998
parent939a7aebfb08124201cd793fdd0fd5ef33ad5c96
repo: don't forget to abort the transaction when failed

ostree_repo_prepare_transaction() should always be matched with a call
to either ostree_repo_commit_transaction() or
ostree_repo_abort_transaction().

Since ostree_repo_pull_with_options() does not call
ostree_repo_abort_transaction() on errors, the OstreeRepo instance will
hit an assertion when it's re-used later for another attempt, such as
when the update is driven by an external component through libostree and
network temporarily goes down.

This commit simply always calls ostree_repo_abort_transaction() in the
exit path of ostree_repo_pull_with_options(), since the function is safe
to call even when we're not in a transaction, and that matches e.g. what
ostree-sysroot-cleanup.c does.
src/libostree/ostree-repo-pull.c